alertmanager:
  enabled: false

kubeStateMetrics:
  enabled: true

nodeExporter:
  enabled: false

pushgateway:
  enabled: false

server:
  fullnameOverride: "prometheus-prometheus-server"

serverFiles:
  alerts: {}
  rules: {}

  prometheus.yml:
    rule_files:
      - /etc/config/rules
      - /etc/config/alerts
    scrape_configs:
      - job_name: prometheus
        static_configs:
          - targets:
            - localhost:9090
      - job_name: kubernetes-cadvisor
        scheme: https
        tls_config:
          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        kubernetes_sd_configs:
          - role: node
        relabel_configs:
          - action: labelmap
            regex: __meta_kubernetes_node_label_(.+)
          - target_label: __address__
            replacement: kubernetes.default.svc:443
          - source_labels:
            - __meta_kubernetes_node_name
            regex: "(.+)"
            target_label: __metrics_path__
            replacement: "/api/v1/nodes/${1}/proxy/metrics/cadvisor"
        metric_relabel_configs:
          - source_labels:
            - pod_name
            target_label: environment
            regex: "(.+)-.+-.+"
      - job_name: 'kubernetes-service-endpoints'
        kubernetes_sd_configs:
          - role: endpoints
        relabel_configs:
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
            action: keep
            regex: true
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
            action: replace
            target_label: __scheme__
            regex: (https?)
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
            action: replace
            target_label: __metrics_path__
            regex: (.+)
          - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
            action: replace
            target_label: __address__
            regex: (.+)(?::\d+);(\d+)
            replacement: $1:$2
          - action: labelmap
            regex: __meta_kubernetes_service_label_(.+)
          - source_labels: [__meta_kubernetes_namespace]
            action: replace
            target_label: kubernetes_namespace
          - source_labels: [__meta_kubernetes_service_name]
            action: replace
            target_label: kubernetes_name
      - job_name: kubernetes-nodes
        scheme: https
        tls_config:
          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        kubernetes_sd_configs:
          - role: node
        relabel_configs:
          - action: labelmap
            regex: __meta_kubernetes_node_label_(.+)
          - target_label: __address__
            replacement: kubernetes.default.svc:443
          - source_labels:
            - __meta_kubernetes_node_name
            regex: "(.+)"
            target_label: __metrics_path__
            replacement: "/api/v1/nodes/${1}/proxy/metrics"
        metric_relabel_configs:
          - source_labels:
            - pod_name
            target_label: environment
            regex: "(.+)-.+-.+"
      - job_name: kubernetes-pods
        tls_config:
          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        kubernetes_sd_configs:
          - role: pod
        relabel_configs:
          - source_labels:
            - __meta_kubernetes_pod_annotation_prometheus_io_scrape
            action: keep
            regex: 'true'
          - source_labels:
            - __meta_kubernetes_pod_annotation_prometheus_io_path
            action: replace
            target_label: __metrics_path__
            regex: "(.+)"
          - source_labels:
            - __address__
            - __meta_kubernetes_pod_annotation_prometheus_io_port
            action: replace
            regex: "([^:]+)(?::[0-9]+)?;([0-9]+)"
            replacement: "$1:$2"
            target_label: __address__
          - action: labelmap
            regex: __meta_kubernetes_pod_label_(.+)
          - source_labels:
            - __meta_kubernetes_namespace
            action: replace
            target_label: kubernetes_namespace
          - source_labels:
            - __meta_kubernetes_pod_name
            action: replace
            target_label: kubernetes_pod_name
      # Sourced from Knative monitoring config: https://github.com/knative/serving/blob/master/config/monitoring/metrics/prometheus/100-prometheus-scrape-config.yaml
      - job_name: autoscaler
        scrape_interval: 3s
        scrape_timeout: 3s
        kubernetes_sd_configs:
        - role: pod
        relabel_configs:
        # Scrape only the the targets matching the following metadata
        - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_label_app, __meta_kubernetes_pod_container_port_name]
          action: keep
          regex: knative-serving;autoscaler;metrics
        # Rename metadata labels to be reader friendly
        - source_labels: [__meta_kubernetes_namespace]
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          target_label: pod
        - source_labels: [__meta_kubernetes_service_name]
          target_label: service
      - job_name: activator
        scrape_interval: 3s
        scrape_timeout: 3s
        kubernetes_sd_configs:
        - role: pod
        relabel_configs:
        # Scrape only the the targets matching the following metadata
        - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_label_app, __meta_kubernetes_pod_container_port_name]
          action: keep
          regex: knative-serving;activator;metrics-port
        # Rename metadata labels to be reader friendly
        - source_labels: [__meta_kubernetes_namespace]
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          target_label: pod
        - source_labels: [__meta_kubernetes_service_name]
          target_label: service
      # Istio mesh
      - job_name: istio-mesh
        scrape_interval: 5s
        kubernetes_sd_configs:
        - role: endpoints
        relabel_configs:
        # Scrape only the the targets matching the following metadata
        - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
          action: keep
          regex: istio-system;istio-telemetry;prometheus
        # Rename metadata labels to be reader friendly
        - source_labels: [__meta_kubernetes_namespace]
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          target_label: pod
        - source_labels: [__meta_kubernetes_service_name]
          target_label: service
      - job_name: istio-policy
        scrape_interval: 5s
        kubernetes_sd_configs:
        - role: endpoints
        relabel_configs:
        # Scrape only the the targets matching the following metadata
        - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
          action: keep
          regex: istio-system;istio-policy;http-monitoring
        # Rename metadata labels to be reader friendly
        - source_labels: [__meta_kubernetes_namespace]
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          target_label: pod
        - source_labels: [__meta_kubernetes_service_name]
          target_label: service
      # Istio telemetry
      - job_name: istio-telemetry
        scrape_interval: 5s
        kubernetes_sd_configs:
        - role: endpoints
        relabel_configs:
        # Scrape only the the targets matching the following metadata
        - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
          action: keep
          regex: istio-system;istio-telemetry;http-monitoring
        # Rename metadata labels to be reader friendly
        - source_labels: [__meta_kubernetes_namespace]
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          target_label: pod
        - source_labels: [__meta_kubernetes_service_name]
          target_label: service
      # Istio pilot
      - job_name: istio-pilot
        scrape_interval: 5s
        kubernetes_sd_configs:
        - role: endpoints
        relabel_configs:
        # Scrape only the the targets matching the following metadata
        - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
          action: keep
          regex: istio-system;istio-pilot;http-monitoring
        # Rename metadata labels to be reader friendly
        - source_labels: [__meta_kubernetes_namespace]
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          target_label: pod
        - source_labels: [__meta_kubernetes_service_name]
          target_label: service
